<wt:fieldset field-set-style="Simple" title="数据权限-模块截图">
    <img src="~/imgs/admin-dataprivilege.png" />
</wt:fieldset>
<wt:fieldset field-set-style="Simple" title="数据权限-功能介绍">
    数据权限从名字来看，很容易理解，即具有查看和操作某些数据的权限。
    假设我们需要不同的学校只能维护自己的学生，下面就为大家介绍，框架如何实现数据权限的过滤。
    <ol class="doc">
        <li>添加数据权限</li>
        <wt:quote>
            数据权限在系统开发阶段，就应该确定好。当业务上将数据权限确定好之后，需要在代码中将数据权限声明给框架，让框架知道，系统中有哪些数据权限。声明的方式就是在Programe文件中的配置服务中
        </wt:quote>
        <wt:code>
public static IWebHost BuildWebHost(string[] args) =>
    WebHost
    .CreateDefaultBuilder(args)
    .ConfigureServices(x =>
    {
        List<IDataPrivilege> pris = new List<IDataPrivilege>();
        pris.Add(new DataPrivilegeInfo<School>("学校", m => m.Name));
        x.AddFrameworkService( dataPrivilegeSettings: pris);
        x.AddLayui();
    })
    .Configure(x =>
    {
    x.UseFrameworkService();
    })
    .Build();
        </wt:code>
        配置如下代码：
        <wt:code>
List<IDataPrivilege> pris = new List<IDataPrivilege>();
pris.Add(new DataPrivilegeInfo<School>( "学校", m => m.Name));
x.AddFrameworkService( dataPrivilegeSettings: pris);
        </wt:code>
        <p>当数据权限有多个的时候，继续在此添加即可，例如：</p>
        <wt:code>
List<IDataPrivilege> pris = new List<IDataPrivilege>();
pris.Add(new DataPrivilegeInfo<School>( "学校权限", m => m.Name));
pris.Add(new DataPrivilegeInfo<Major>( "专业权限", m => m.Name));
x.AddFrameworkService( dataPrivilegeSettings: pris);
        </wt:code>
        <p>
        通过上述配置后，系统可以知道有哪些数据权限。在新建数据权限过程中，"数据权限"字段的下拉列表中，会显示出配置的数据权限的内容。<br />
        </p>
        <p>
            选择学校权限后，可以选择全部权限或者部分权限，如果选择部分权限，系统会列出来学校表中的数据让你选择有哪个学校的权限。如图：<br />
        </p>
        <p>
          <img src="~/imgs/admin-dataprivilege-create3.png" /> <br/><br/>
          分配数据权限可以分配到用户组，也可以分配到单个用户。"权限类别"上选择用户组权限，即可分配到用户组上，选择用户权限，即可分配到用户上。<br />
          用户组和用户的输入框具有模糊查询的功能，便于用户进行选择。<br />
        </p>
      <br /><br />

        <li>使用数据权限</li>
        假设你有一个员工表通过SchoolID关联了学校，在查询的数据列表通过DPWhere( LoginUserInfo.DataPrivileges, x=>x.SchoolID)就可以根据当前登陆用户所配置的数据权限过滤数据
        <wt:code>
public override IOrderedQueryable<Employee_View> GetSearchQuery()
{
    var query = DC.Set<Employee>()
        .CheckEqual( Searcher.CompanyID, x=>x.CompanyID)
        .CheckContain( Searcher.Name, x=>x.Name)
        .CheckEqual( Searcher.Sex, x=>x.Sex)
        .DPWhere( LoginUserInfo.DataPrivileges, x=>x.SchoolID)
        .Select(x => new Employee_View
        {
            ID = x.ID,
            Name_view = x.Company.Name,
            Name = x.Name,
            Age = x.Age,
            Sex = x.Sex,
        })
        .OrderBy(x => x.ID);
        return query;
}
        </wt:code>
    </ol>
</wt:fieldset>
